# 声明镜像来源为golang:alpine
FROM golang:alpine

# 设置环境变量GO111MODULE为on
ENV GO111MODULE=on

# 设置环境变量GOPROXY为https://goproxy.io,direct
# ENV GOPROXY=https://goproxy.io,direct
ENV GOPROXY=https://mirrors.aliyun.com/goproxy/

# 声明工作目录
# WORKDIR /go/src/go-server
WORKDIR /

# 拷贝项目到工作目录
COPY . ./

# go env为查看go的环境变量, go build -o server . 为打包项目,二进制
RUN go env && go build -o app .

# ======= 以下为多阶段构建 =======

# 声明镜像来源为alpine:latest
FROM alpine:latest

# 安装 bash工具，用于运行wait-for-it.sh
RUN set -eux && sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
RUN apk add --no-cache bash

# 设置系统时钟为上海时间
RUN apk add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone \
&& apk del tzdata

# 镜像编写者及邮箱
LABEL MAINTAINER="Redfalsh@13693421942@163.com"

# 设置配置文件环境变量GOFIRST_CONFIG
ENV GOFIRST_CONFIG=production.yaml

# 声明工作目录
WORKDIR /app

# 拷贝wait-for-it.sh脚本到当前工作目录
COPY --from=0 /wait-for-it.sh ./
RUN chmod a+x wait-for-it.sh

# 拷贝打包好的server二进制文件到当前工作目录
COPY --from=0 /app ./

# 拷贝config.yaml配置文件到当前工作目录
# COPY --from=0 /production.yaml ./


# 拷贝resource静态文件夹到当前工作目录
# COPY --from=0 /go/src/go-server/resource ./resource

# 运行打包好的二进制
# ENTRYPOINT ./server
